From ae42f286bb1e2f93aaf785b2289808dbd7b25e80 Mon Sep 17 00:00:00 2001 From: Federico Mena Quintero Date: Wed, 29 Jun 2011 18:20:53 -0500 Subject: [PATCH] Allow resolving absolute paths even if there is no base_folder This lets us do proper completion in GtkFileChooserEntry even when no base folder has been set. Completion for relative paths won't work, as usual, as expected. --- gtk/gtkfilechooserentry.c | 1 - gtk/gtkfilesystem.c | 17 +++++++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/gtk/gtkfilechooserentry.c b/gtk/gtkfilechooserentry.c index 55303ed0fb..6ac0b4b430 100644 --- a/gtk/gtkfilechooserentry.c +++ b/gtk/gtkfilechooserentry.c @@ -1563,7 +1563,6 @@ refresh_current_folder_and_file_part (GtkFileChooserEntry *chooser_entry, error = NULL; if (!chooser_entry->file_system || - !chooser_entry->base_folder || !_gtk_file_system_parse (chooser_entry->file_system, chooser_entry->base_folder, text, &folder_file, &file_part, &error)) diff --git a/gtk/gtkfilesystem.c b/gtk/gtkfilesystem.c index 30ff484444..f3d8e823a0 100644 --- a/gtk/gtkfilesystem.c +++ b/gtk/gtkfilesystem.c @@ -708,9 +708,22 @@ _gtk_file_system_parse (GtkFileSystem *file_system, if (str[0] == '~' || g_path_is_absolute (str) || is_uri) file = g_file_parse_name (str); else - file = g_file_resolve_relative_path (base_file, str); + { + if (base_file) + file = g_file_resolve_relative_path (base_file, str); + else + { + *folder = NULL; + *file_part = NULL; + g_set_error (error, + GTK_FILE_CHOOSER_ERROR, + GTK_FILE_CHOOSER_ERROR_BAD_FILENAME, + _("Invalid path")); + return FALSE; + } + } - if (g_file_equal (base_file, file)) + if (base_file && g_file_equal (base_file, file)) { /* this is when user types '.', could be the * beginning of a hidden file, ./ or ../ -- 2.30.2